#ifndef _MAIN_H
#define _MAIN_H

//////////////////////////
/* Pouze pro OS Windows */
#ifdef _WIN32
#pragma comment(lib, "opengl32.lib")                    //< OpenGL knihovna

#define _CRT_SECURE_NO_WARNINGS                         //< Nechceme varovani na thread safe funkce (thread safe zaridime sami)

/* Uzitecne konstanty (definovane v POSIXu, ale ne we Win32) */
#define INFINITY std::numeric_limits<float>::infinity() //< uzitecne - nekonecno (+NaN)
#endif
//////////////////////////

//////////////
/* Hlavicky */

/* Systemove hlavicky */
#ifdef _WIN32
#include <Windows.h>    //< Systemova hlavicka Windows
#else
#include <X11/Xlib.h>		//< XLib pro X11
#include <X11/Xutil.h>	//< X utilities pro X11
#endif

/* Standardni knihovny C++ */
#include <string>     //< retezce
#include <sstream>    //< streamovane retezce (tokenizace, parsovani a dalsi dobre veci)
#include <vector>     //< standardni kontejner
#include <list>       //< seznam
#include <queue>      //< fronta (pristupna z jedne strany)
#include <deque>      //< fronta (pristupna z obou stran)
#include <algorithm>  //< merge sorting a dalsi featurky v STL
#include <iostream>   //< standardni vstup a vystup
#include <fstream>    //< standardni vstup a vystup se souborem

/* OpenGL */
#include <GL/gl.h>			//< OpenGL core
#include <GL/glext.h>		//< OpenGL extenze
#ifdef _WIN32
#include <GL\wglext.h>  //< Windows OpenGL napojeni
#else
#include <GL/glx.h>			//< POSIX GLX napojeni
#include <GL/glxext.h>	/**< OpenGL extensions for X */
#endif

/* Low-level */
#include <mmintrin.h>   //< SSE
#include <xmmintrin.h>  //< SSE2
//////////////

/////////////////////
/* Jmenne prostory */

using namespace std;    //< Standardni jmenny prostor C++
/////////////////////

#endif